Skip to content

serializer

Implement a serializer for caching data to and from version controlled files.

Attributes⚓︎

Classes⚓︎

UnconvertableError ⚓︎

Bases: ValueError

Custom Error to indicate conversion failure.

Source code in pytest_cache_assert/_check_assert/serializer.py
class UnconvertableError(ValueError):
    """Custom Error to indicate conversion failure."""

Functions⚓︎

dumps ⚓︎

dumps(obj, *, sort_keys=False, indent=0)

Serialize object to str.

PARAMETER DESCRIPTION
obj

data to serialize

TYPE: Any

sort_keys

if True, order keys before serializing

TYPE: bool DEFAULT: False

indent

indent for pretty-printing. Default is no extra whitespace

TYPE: int DEFAULT: 0

RETURNS DESCRIPTION
str

serialized data

TYPE: str

RAISES DESCRIPTION
UnconvertableError

when serialization fails

Source code in pytest_cache_assert/_check_assert/serializer.py
@beartype
def dumps(obj: Any, *, sort_keys: bool = False, indent: int = 0) -> str:
    """Serialize object to str.

    Args:
        obj: data to serialize
        sort_keys: if True, order keys before serializing
        indent: indent for pretty-printing. Default is no extra whitespace

    Returns:
        str: serialized data

    Raises:
        UnconvertableError: when serialization fails

    """
    try:
        return json.dumps(obj, sort_keys=sort_keys, indent=indent or None, cls=_CacheAssertSerializer)
    except UnconvertableError as exc:
        msg = f'Conversion error. Try specifying new converters in AssertConfig to fix: {exc}'  # noqa: E501
        raise UnconvertableError(msg) from exc

loads ⚓︎

loads(raw)

Deserialize arbitrary JSON data back to Python types.

PARAMETER DESCRIPTION
raw

raw string JSON

TYPE: str

RETURNS DESCRIPTION
T_DIFF

DiffResults-safe data

TYPE: T_DIFF

Source code in pytest_cache_assert/_check_assert/serializer.py
@beartype
def loads(raw: str) -> T_DIFF:
    """Deserialize arbitrary JSON data back to Python types.

    Args:
        raw: raw string JSON

    Returns:
        T_DIFF: DiffResults-safe data

    """
    return json.loads(raw)

make_diffable ⚓︎

make_diffable(data)

Convert raw object to diffable types for assertion checks.

PARAMETER DESCRIPTION
data

data to serialize

TYPE: Any

RETURNS DESCRIPTION
T_DIFF

DiffResults-safe data

TYPE: T_DIFF

Source code in pytest_cache_assert/_check_assert/serializer.py
@beartype
def make_diffable(data: Any) -> T_DIFF:
    """Convert raw object to diffable types for assertion checks.

    Args:
        data: data to serialize

    Returns:
        T_DIFF: DiffResults-safe data

    """
    return loads(dumps(data))

pretty_dumps ⚓︎

pretty_dumps(obj)

Serialize object to a pretty-printable str.

PARAMETER DESCRIPTION
obj

data to serialize

TYPE: Any

RETURNS DESCRIPTION
str

serialized data

TYPE: str

Source code in pytest_cache_assert/_check_assert/serializer.py
@beartype
def pretty_dumps(obj: Any) -> str:
    """Serialize object to a pretty-printable str.

    Args:
        obj: data to serialize

    Returns:
        str: serialized data

    """
    return dumps(obj, sort_keys=True, indent=2).strip() + '\n'

register_user_converters ⚓︎

register_user_converters(converters)

Register the user-specified converters.

Source code in pytest_cache_assert/_check_assert/serializer.py
@beartype
def register_user_converters(converters: List[Converter]) -> None:
    """Register the user-specified converters."""
    for converter in converters:
        _CONVERTERS.register(converter.types, converter.func)

Last update: August 30, 2023
Created: August 30, 2023